/*
 * Designed and developed by 2017 skydoves (Jaewoong Eum)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.skydoves.colorpickerview;

import androidx.annotation.ColorInt;

/** 
 * ColorEnvelope是颜色的包装类，提供各种形式的颜色表示。
 * <p>
 * 此类将单一的颜色值转换为多种常用的颜色表示格式，方便开发者在不同场景下使用。
 * 当用户从颜色选择器中选择颜色时，此封装类提供了统一的访问接口。
 */
@SuppressWarnings("unused")
public class ColorEnvelope {

  /** 
   * 整型颜色值（ARGB格式）
   * 包含透明度（Alpha）、红色（Red）、绿色（Green）和蓝色（Blue）分量
   */
  @ColorInt 
  private int color;
  
  /** 
   * 十六进制颜色代码字符串
   * 格式为"#AARRGGBB"，其中AA是透明度，RR是红色，GG是绿色，BB是蓝色
   */
  private String hexCode;
  
  /** 
   * ARGB分量数组
   * 数组长度为4，索引0: Alpha，索引1: Red，索引2: Green，索引3: Blue
   * 每个分量的取值范围为0-255
   */
  private int[] argb;

  /**
   * 构造函数，根据给定的颜色值创建ColorEnvelope实例
   * 
   * @param color ARGB格式的整型颜色值
   */
  public ColorEnvelope(@ColorInt int color) {
    this.color = color;
    this.hexCode = ColorUtils.getHexCode(color);
    this.argb = ColorUtils.getColorARGB(color);
  }

  /**
   * 获取封装的整型颜色值
   * 
   * @return ARGB格式的整型颜色值
   */
  public @ColorInt int getColor() {
    return color;
  }

  /**
   * 获取十六进制颜色代码
   * 
   * @return 格式为"#AARRGGBB"的十六进制颜色字符串
   */
  public String getHexCode() {
    return hexCode;
  }

  /**
   * 获取ARGB分量数组
   * 
   * @return 包含Alpha、Red、Green、Blue四个分量的整型数组
   */
  public int[] getArgb() {
    return argb;
  }
}
